package com.tbs.easyhomemoneyserver.interfaces

import com.tbs.easyhomemoneyserver.DO.FlowNode
import com.tbs.easyhomemoneyserver.model.params.AcceptItem

interface IFlowNodeAction {

    /**
     * 可接受的整形值
     *
     * @return
     */
    fun acceptIntValues(): Set<AcceptItem<Int>>;

    /**
     * 可接受的字符串值
     *
     * @return
     */
    fun acceptStringValues(): Set<AcceptItem<String>>;

    /**
     * 当节点创建时触发，未插入数据库
     *
     * @param node
     */
    fun onNodeCreate(node: FlowNode)

    /**
     * 当node节点值修改时
     *
     * @param oldNode 过时数据
     * @param newnode 最新数据
     * @param changedInt 修改的整形值
     * @param changeText 修改的字符串值
     */
    fun onNodeValueChanged(oldNode: FlowNode, newnode: FlowNode, changedInt: Int?, changeText: String?)

    /**
     * 当节点被结束时
     *
     * @param node
     */
    fun onNodeClosed(node: FlowNode)
}
